4  Funkcje i operacje matematyczne oraz statystyczne

Martyna Kosińska

4.1 📘 Funkcje i operacje matematyczne i statystyczne

x=c(-2,4,6,10,-3)
y=c(7,5,-12,4,-1)

pmin(x,y)
[1]  -2   4 -12   4  -3
pmax(x,y)
[1]  7  5  6 10 -1
sum(x)
[1] 15
mean(x)
[1] 3
abs(x)
[1]  2  4  6 10  3
min(x)
[1] -3
max(x)
[1] 10
median(x)
[1] 4
quantile(x)
  0%  25%  50%  75% 100% 
  -3   -2    4    6   10 
quantile(x,c(0.75))
75% 
  6 
quantile(x,seq(0.1,0.9,0.1))
 10%  20%  30%  40%  50%  60%  70%  80%  90% 
-2.6 -2.2 -0.8  1.6  4.0  4.8  5.6  6.8  8.4 
wariancja=sum((x-mean(x))^2)/length(x)
wariancja
[1] 24
wariancja_s=sum((x-mean(x))^2)/(length(x)-1)
wariancja_s
[1] 30
var(x)
[1] 30
odch_st=sqrt(wariancja)
odch_st
[1] 4.898979
odch_st_s=sqrt(wariancja_s)
odch_st_s
[1] 5.477226
o_st=sd(x)
o_st
[1] 5.477226
x=c(23,NA,2,-12,32)
mean(x)
[1] NA
mean(x,na.rm=TRUE)
[1] 11.25
#Dzielenie modulo.
10%%2
[1] 0
10%%4
[1] 2

4.2 📘 Funkcje użytkownika

# Konstrukcja funkcji obliczającej i zwracającej sumę liczb.

suma=function(a,b){
a+b
}

suma(3,5)   #Suma liczb 3 i 5, gdzie a=3 i b=5.
[1] 8
# Poniższy kod nie zwróci wyniku.

suma=function(a,b){
s=a+b
}
suma(3,5)
# s 
# Obiekt s nie jest zwracany, bo istnieje w funkcji, 
# ale nie w przestrzeni nazw, obiektów R.

# Funkcja return pozwala na zwracanie wyniku.

suma=function(a,b){
s=a+b
return(s)
}
suma(3,5)
[1] 8

4.2.1 Wyniki zaleca się zapisać na liście

suma=function(a,b){
s=a+b
list(suma=s)
}
suma(3,5)
$suma
[1] 8
# Funkcja użytkowanika zwracająca sumę, różnicę, iloczyn, iloraz i potęgę liczb.

matma=function(a,b){
s=a+b
r=a-b
il=a/b
ilocz=a*b
p=a^b

list(suma=s,różnica=r,iloraz=il,iloczyn=ilocz,potęga=p)
}

matma(4,3)
$suma
[1] 7

$różnica
[1] 1

$iloraz
[1] 1.333333

$iloczyn
[1] 12

$potęga
[1] 64
# Wyświetlenie iloczynu liczb.
matma(4,3)$iloczyn
[1] 12
matma(4,3)[4]
$iloczyn
[1] 12
matma(4,3)[[4]]
[1] 12
# Obliczenia w funkcji "matma" można wykonać  
# nie tylko dla pojedynczych wartości, ale i dla wektorów.

x=1:5
y=c(2,5,1,3,2)
matma(x,y)
$suma
[1] 3 7 4 7 7

$różnica
[1] -1 -3  2  1  3

$iloraz
[1] 0.500000 0.400000 3.000000 1.333333 2.500000

$iloczyn
[1]  2 10  3 12 10

$potęga
[1]  1 32  3 64 25
# Funkcja zwracająca 4 największe wartości z wektora liczb.

x=1:20

największe=function(a){
s=sort(a,decreasing=T)  #Dane sortowane są malejąco.
s[1:4]  #Z danych posortowanych malejąco wybierane są 4 pierwsze wartości.
}

największe(x)
[1] 20 19 18 17
# Funkcja użytkownika, która zwraca 
# wartość minimalną, maksymalną, średnią, 
# odchylenie ćwiartkowe i współczynnik asymetrii Yule'a Kendall'a.

f=function(a){
m=min(a)
mx=max(a)
s=mean(a)
o=sd(a)
q1=quantile(a,0.25)[[1]]
q2=quantile(a,0.5)[[1]]
q3=quantile(a,0.75)[[1]]
w=((q3-q2)-(q2-q1))/(q3-q1)

list(minimum=m,maksimum=mx,średnia=s,odchylenie_ćwiartkowe=o,wsp_asymetrii=w)
}
wektor=c(12,3,4,65,32)
f(wektor)
$minimum
[1] 3

$maksimum
[1] 65

$średnia
[1] 23.2

$odchylenie_ćwiartkowe
[1] 26.10939

$wsp_asymetrii
[1] 0.4285714

4.2.2 Wartości domyślne funkcji użytkownika

obliczenia=function(a=99,b=12){ #W tej linijce są definiowane wartości domyślne argumentów a i b.

s=a+b
r=a-b
il=a/b
ilocz=a*b
p=a^b
list(suma=s,różnica=r,iloraz=il,iloczyn=ilocz,potęga=p)
}

obliczenia(b=3) #Funkcja użytkownika zostanie wykonana dla a=99 (wartość domyślna) i b=3.
$suma
[1] 102

$różnica
[1] 96

$iloraz
[1] 33

$iloczyn
[1] 297

$potęga
[1] 970299
obliczenia(23)  #Funkcja użytkownika zostanie wykonana dla a=23 i b=12 (wartość domyślna). 23 stoi na pierwszym miejscu i zostało potraktowane jako a, ponieważ a znajduje się na 1 miejscu w zapisie function().
$suma
[1] 35

$różnica
[1] 11

$iloraz
[1] 1.916667

$iloczyn
[1] 276

$potęga
[1] 2.191462e+16
obliczenia(3,4)
$suma
[1] 7

$różnica
[1] -1

$iloraz
[1] 0.75

$iloczyn
[1] 12

$potęga
[1] 81